package com.yvnze.ydyp.common.service.impl;

import com.yvnze.ydyp.common.info.TokenInfo;
import com.yvnze.ydyp.common.redis.RedisRepository;
import com.yvnze.ydyp.common.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

/**
 * @author HaiPeng Wang
 * @date 2021/7/15 16:16
 * @Description:
 */
@Service
public class TokenServiceImpl implements TokenService {

    @Autowired
    StringRedisTemplate redisTemplate;

    @Autowired
    private RedisRepository redisRepository;

    /**
     * 根据Token从Redis获取token的信息也就是UserId
     * @param accessToken
     * @return
     */
    @Override
    public TokenInfo getTokenInfo(String accessToken) {

        //拿到存在redis 中的userId
        String userId = redisRepository.selectAccessToken(accessToken);
        if (userId != null) {
            TokenInfo tokenInfo = new TokenInfo();
            tokenInfo.setUserId(userId);
            tokenInfo.setAccessToken(accessToken);
            return tokenInfo;
        }
        return null;
    }

    /**
     * 更新Redis中的token信息
     *
     * @param accessToken
     * @param userId
     */
    @Override
    public void refreshToken(String accessToken, String userId) {
        //拿到存在redis 中的userId
        String userIdInRe = redisRepository.selectAccessToken(accessToken);
        if (userIdInRe != null && userId.equals(userIdInRe)){
            redisRepository.refreshLoginToken(accessToken,userId);
        }
    }
}
